namespace OhioState.Graphics
{
    /// <summary>
    /// IView interface that defines the methods for any view entity
    /// </summary>
    public interface IView
    {
        Viewport Viewport { get; }
        ICamera CurrentCamera { get; }
        /// <summary>
        /// Add a layer to the view
        /// </summary>
        /// <param name="layer">layer to add</param>
        void AddLayer(ILayer layer);
        /// <summary>
        /// Remove a layer from the view
        /// </summary>
        /// <param name="layer">layer to remove</param>
        void RemoveLayer(ILayer layer);
        /// <summary>
        /// Composite the layers in the view
        /// </summary>
        /// <param name="panel">associated renderpanel</param>
        void CompositeLayers(IRenderPanel panel);
    }
}
